<script type="text/javascript">
	function Person(){
		//var _private;不希望同事使用方法的时候被访问，人为加一个下划线开头;js没有绝对的隐式属性，通过命名规则去规定

	}
	person = new Person();//person里有__proto__浅粉色属性，是系统自定义的隐式的属性,__是系统的命名规则
	//person什么属性也没有，它的原型也就只有constuctor
	console.log(person) 

</script>

<script type="text/javascript">
	Person.prototype.name = 'abc';
	function Person(){
		//var this = {
		//		__proto__ : Person.prototype; __proto__里面存Person对象的原型；为什么对象先找自己的属性再找原型，就是通过__proto__；每一个实例对象都有一个__proto__属性，指向它的原型
		//};
	}
	var person = new Person();//用new构造对象时，里面发生隐式三段式
	console.log(person);
	console.log(person.__proto__);//__proto__存放Person的原型
	console.log(person.name)//访问对象时，当对象身上没有该属性时，就会通过__proto__指向的索引寻找Person的prototype上有没有该属性，__proto__相当于连接的作用，把原型和自己连接在一起

	
</script>

<script type="text/javascript">
	//更改对象的原型
	Person.prototype.name = 'abc';
	function Person(){
		//var this = {
		//__proto__ = Person.prototype
	//}
	}
	var person = new Person();//Person构造函数构造出的对象，它的原型未必是prototype，它是可以被修改的
	 
	var obj = {
		name : 'sany'
	}
	person.__proto__ = obj;//person等同于this,修改原型，__proto__指向obj,person继承的对象变成obj
	
	console.log(person.name)
</script>

<script type="text/javascript">
	Person.prototype.name = 'suny';

	function Person(){}

	var person = new Person();
	//var this = {
	//	__proto__ : Person.prototype
	//}

	Person.prototype.name = 'cherry';//修改prototype.name的值，__proto__的指向没变

	console.log(person.name)//访问person.name,寻找__proto__指向Person.prototype,prototype.name的值最终修改为'cherry'
</script>

<script type="text/javascript">
	Person.prototype = {
		name : 'suny'
	}

	function Person(){
		//var this = {__proto__ : Person.prototype} __proto__和prototype指向同一个空间，修改了prototype指向的空间为'cherry'后，__proto__还是指向原来的空间'suny'
	}

	var person = new Person();

	Person.prototype = {
		name : 'cherry'//Person.prototype换了一个新空间
	}

	console.log(perosn.name);//person.prototype把自己的空间换了，__proto__没换，还是指向原来的空间

	//基础规则：引用值的相互赋值
	var obj = {name : 'a'};
	var obj1 = obj;
	obj = {name : 'b'};
	console.log(obj1);

	Person.prototype = {name : 'a'};
	__proto__ = Person.prototype;
	Person.prototype = {name : 'b'};
	console.log(__proto__);
</script>

<script type="text/javascript">
	Person.prototype.name = 'xo';

	function Person(){
		//var this = {__proto__ : Person.prototype}
	}
	Person.prototype = {
		name : 'jo'
	}

	var person = new Person();//修改了prototype才生成__proto__

	console.log(person.name);
</script>

<script type="text/javascript">
	function Person(){}
	Person.prototype.name = 'suny';

	Person.prototype = {
		name : 'cherry'
	}
	var person = new Person();
	console.log(person.prototype);

</script>

